/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package panaderialabaguette;
import java.io.*;
import javax.swing.*;
import jxl.write.*;
import jxl.*;

public class ExcelTableExporter {

    private File file;
    private JTable table;
    private String nombreTab;

    public ExcelTableExporter(JTable table,File file,String nombreTab){
        this.file=file;
        this.table=table;
        this.nombreTab=nombreTab;
    }


    public boolean export(){
        try
        {
            //Nuestro flujo de salida para apuntar a donde vamos a escribir
            DataOutputStream out=new DataOutputStream(new FileOutputStream(file));

            //Representa nuestro archivo en excel y necesita un OutputStream para saber donde va locoar los datos
            WritableWorkbook w = Workbook.createWorkbook(out);

            

            //Como excel tiene muchas hojas esta crea o toma la hoja
            //Coloca el nombre del "tab" y el indice del tab
            WritableSheet s = w.createSheet(nombreTab, 0);
            for (int n=0;n<=table.getColumnCount()-1;n++)
            {
                s.addCell(new Label(n,0, table.getModel().getColumnName(n)));
            }

            for(int i=0;i<=table.getRowCount()-1;i++){
                for(int j=0;j<=table.getColumnCount()-1;j++){
                    Object objeto=table.getValueAt(i,j);
                        	s.addCell(new Label(j,i+1, String.valueOf(objeto)));
                }
            }

            w.write();
            //Cerramos el WritableWorkbook y DataOutputStream
            w.close();
            out.close();


            //si todo sale bien salimos de aqui con un true :D
            return true;

        }
        catch(IOException ex){
            ex.printStackTrace();
        }
        catch(WriteException ex){
            ex.printStackTrace();
        }

        //Si llegamos hasta aqui algo salio mal
        return false;
    }
}